System and method of distributed maintenance of contact center state

ABSTRACT

A system and/or a method of distributed maintenance of contact center state including the state of contact center objects which may include directory numbers and agents. Device controllers and call controllers are used to monitor device and call information. Data aggregation nodes are connected to the device controllers and call controllers. The data aggregation nodes share directory number state information and agent state information via a publish-subscribe bus, and aggregate state information to form full state information.

FIELD

The present invention relates to contact center monitoring systems andmethods, and more particularly to scalable systems and methods formaintaining contact center state information.

BACKGROUND

Contact centers may be used by an organization to communicate in anefficient and systematic manner with outside parties. Such centers mayfor example have large numbers of agents staffing telephones, andinteracting with outside parties and with each other. Calls may beplaced on hold or into an interactive voice response (IVR) system whenfirst connected to the contact center; subsequently an agent may take acall, place it back on hold, transfer the call, conference in anotheragent, or take other such actions related to the call.

It may be helpful to the agents or to other members of the organizationto have access to information about individual calls or devices, or toobtain statistical information about the operation of the contactcenter, such as, for example, the average or maximum caller hold timeduring the previous hour. Such information may also be of use, forexample, to contact center systems used to route calls to availableagents or to agents qualified to handle a particular issue. A contactcenter monitoring system which maintains and organizes such informationshould be able to handle large numbers of calls, agents, and devices,without significant degradation in performance; viz. such a systemshould be scalable to larger installations without being limited by aperformance bottleneck. In particular, a simple approach suitable for asmall system, such as maintaining all of the contact center stateinformation in a database, stored in a back-end database server, andaccessed via multiple front-end clients, may be unacceptable because itmay suffer from multiple hardware and software bottlenecks at the singleserver, the load on which may increase rapidly as the contact centerincreases in size.

Thus, there is a need for a scalable system for maintaining contactcenter state information.

SUMMARY

The present invention relates to a system and/or a method of monitoringand aggregating state information for directory numbers (DNs) andagents, which are objects in an exemplary contact center. Devicecontrollers and call controllers monitor the devices and calls in thecontact center, respectively, and relay state update information to dataaggregation nodes, which aggregate and share the data, to form full DNstate and agent state information. The distributed architecture allowsthe system to be scaled in size without hindrance from performancebottlenecks.

According to an embodiment of the present invention there is provided asystem, including: a plurality of controllers configured to generatedata updates for a plurality of contact center objects, the contactcenter objects including a plurality of directory numbers and aplurality of agents; a plurality of data aggregation nodes; each dataaggregation node in a first subset of the plurality of data aggregationnodes being configured to: monitor one or more of the plurality ofcontrollers; and maintain partial directory number state informationreceived from the controllers monitored by the data aggregation node;and each data aggregation node in a second subset of the plurality ofdata aggregation nodes being configured to: merge partial directorynumber state information obtained from data aggregation nodes of thefirst plurality of data aggregation nodes to form aggregated directorynumber state information.

In one embodiment, the aggregated directory number state information ispartially aggregated directory number state information.

In one embodiment, each data aggregation node in the second subset ofthe plurality of data aggregation nodes is configured to: own one ormore of the plurality of directory numbers; and merge partial directorynumber state information obtained from data aggregation nodes of thefirst subset of the plurality of data aggregation nodes to form fulldirectory number state information for the directory numbers owned bythe data aggregation node.

In one embodiment, the data aggregation nodes are processes configuredto be executed on a plurality of server processors.

In one embodiment, the plurality of controllers includes a plurality ofcall controllers.

In one embodiment, the plurality of controllers includes a plurality ofdevice controllers.

In one embodiment the system further includes a publish-subscribe bus,wherein each data aggregation node of the first plurality of dataaggregation nodes is configured to publish publications of partialdirectory number state information to the publish-subscribe bus under atopic for partial directory number state information and each dataaggregation node of the second plurality of data aggregation nodes isconfigured to subscribe to the publish-subscribe bus under a topic forpartial directory number state information, with a filter conditionselected to be satisfied by any publication for any of the directorynumbers owned by the node.

In one embodiment, the publish-subscribe bus includes storage space inshared memory.

In one embodiment, the data aggregation nodes of the first plurality ofdata aggregation nodes are publishers to the publish-subscribe bus; thedata aggregation nodes of the second plurality of data aggregation nodesare subscribers to the publish-subscribe bus; and the publish-subscribebus includes a message broker configured to distribute publications tosubscribers according to the results of the application of subscriberfilter conditions to publications provided by publishers.

In one embodiment, each publication includes a field identifying thedirectory number for which the publication contains partial stateinformation.

In one embodiment, each data aggregation node in a third subset of theplurality of data aggregation nodes is configured to: own one or more ofthe plurality of agents; and merge agent state information componentsobtained from data aggregation nodes of the second plurality of dataaggregation nodes to form agent state information for the agents ownedby the data aggregation node.

In one embodiment, each data aggregation node of the second plurality ofdata aggregation nodes is configured to publish publications of partialdirectory number state information to the publish-subscribe bus under atopic for full directory number state information and each dataaggregation node of the third plurality of data aggregation nodes isconfigured to subscribe to the publish-subscribe bus under a topic forfull directory number state information, with a first filter condition,wherein the first filter condition is selected to be satisfied bypublications for directory numbers for which the agent currently loggedin is an agent owned by the data aggregation node.

In one embodiment, each data aggregation node of the third plurality ofdata aggregation nodes is further configured to subscribe to thepublish-subscribe bus under a topic for full directory number stateinformation, with a second filter condition, wherein the second filtercondition is selected to be satisfied by publications for directorynumbers, the agent most recently logged in to which is an agent owned bythe data aggregation node.

In one embodiment, the publish-subscribe bus includes storage space inshared memory.

In one embodiment, the publish-subscribe bus includes a message brokerconfigured to distribute publications to subscribers according to theresults of the application of subscriber filter conditions topublications provided by publishers.

In one embodiment, each publication includes: field identifying thedirectory number for which the publication contains full stateinformation; a field identifying the agent currently logged in to thedirectory number; and a field identifying the agent most recently loggedin to the directory number.

In one embodiment, each data aggregation node of the first plurality ofdata aggregation nodes is configured to publish publications of partialdirectory number state information to the publish-subscribe bus under atopic for partial directory number state information; each dataaggregation node of the second plurality of data aggregation nodes isconfigured to subscribe to the publish-subscribe bus under a topic forpartial directory number state information, with a filter conditionselected to be satisfied by any publication for any of the directorynumbers owned by the node; each data aggregation node of the secondplurality of data aggregation nodes is configured to publishpublications of partial directory number state information to thepublish-subscribe bus under a topic for full directory number stateinformation; and each data aggregation node of the third plurality ofdata aggregation nodes is configured to subscribe to thepublish-subscribe bus under a topic for full directory number stateinformation, with a first filter condition; wherein the first filtercondition is selected to be satisfied by publications for directorynumbers for which the agent currently logged in is an agent owned by thedata aggregation node.

In one embodiment, each data aggregation node of the third plurality ofdata aggregation nodes is further configured to subscribe to thepublish-subscribe bus under a topic for full directory number stateinformation, with a second filter condition, wherein the second filtercondition is selected to be satisfied by publications for directorynumbers, the agent most recently logged in to which is an agent owned bythe data aggregation node.

In one embodiment, the publish-subscribe bus includes storage space inshared memory.

In one embodiment, the publish-subscribe bus includes a message brokerconfigured to distribute publications to subscribers according to theresults of the application of subscriber filter conditions topublications provided by publishers.

According to another embodiment of the present invention there isprovided a system, including: a plurality of controllers configured togenerate data updates for a plurality of contact center objects, thecontact center objects including a plurality of directory numbers and aplurality of agents; means for collecting partial directory number stateinformation; means for aggregating directory number state information;and means for communication between the means for collecting partialdirectory number state information and the means for aggregatingdirectory number state information.

According to another embodiment of the present invention there isprovided a method, including: instantiating, by one or more servers, aplurality of call controllers; and a plurality of data aggregationnodes; obtaining, by a data aggregation node, first partial directorynumber state information from a first call controller; publishing, by adata aggregation node, the first partial directory number stateinformation on a publish-subscribe bus; obtaining, by a data aggregationnode, second partial directory number state information from a secondcall controller; publishing, by a data aggregation node, the secondpartial directory number state information on the publish-subscribe bus;obtaining, by a data aggregation node, the first partial directorynumber state information from the publish-subscribe bus; obtaining, by adata aggregation node, the second partial directory number stateinformation from the publish-subscribe bus; merging, by a dataaggregation node, the first partial directory number state informationand the second partial directory number state information; publishing,by a data aggregation node, full directory number state information onthe publish-subscribe bus; and forming, by a data aggregation node, fulldirectory number state information and agent state information.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features and advantages of the present invention willbecome appreciated as the same become better understood with referenceto the specification, claims and appended drawings wherein:

FIG. 1 is a block diagram of elements in an exemplary contact centeraccording to an embodiment of the present invention;

FIG. 2 is a block diagram of agents logged in, or not logged in, todirectory numbers according to an embodiment of the present invention;

FIG. 3 is a block diagram of data aggregation nodes connected to devicecontrollers and call controllers according to an embodiment of thepresent invention;

FIG. 4A is a block diagram of data aggregation nodes in three differentroles with respect to an exemplary call controller and apublish-subscribe bus according to an embodiment of the presentinvention;

FIG. 4B is a block diagram of data aggregation nodes in two differentroles with respect to exemplary device controllers and call controllersand a publish-subscribe bus according to an embodiment of the presentinvention;

FIG. 4C is a block diagram of data aggregation nodes in two differentroles with respect to a publish-subscribe bus according to an embodimentof the present invention;

FIG. 5 is a flowchart illustrating the steps for aggregating fulldirectory number state information and agent state information accordingto an embodiment of the present invention; and

FIG. 6 is a block diagram of data aggregation nodes in four differentroles with respect to an exemplary call controller and apublish-subscribe bus according to an embodiment of the presentinvention.

DETAILED DESCRIPTION

The detailed description set forth below in connection with the appendeddrawings is intended as a description of exemplary embodiments of amethod of distributed maintenance of contact center state provided inaccordance with the present invention and is not intended to representthe only forms in which the present invention may be constructed orutilized. The description sets forth the features of the presentinvention in connection with the illustrated embodiments. It is to beunderstood, however, that the same or equivalent functions andstructures may be accomplished by different embodiments that are alsointended to be encompassed within the spirit and scope of the invention.As denoted elsewhere herein, like element numbers are intended toindicate like elements or features.

FIG. 1 is a schematic block diagram of a system supporting a contactcenter that is configured to provide customer availability informationto customer service agents according to one exemplary embodiment of theinvention. The contact center may be an in-house facility to a businessor corporation for serving the enterprise in performing the functions ofsales and service relative to the products and services availablethrough the enterprise. In another exemplary embodiment, the contactcenter may be a third-party service provider. The contact center may behosted in equipment dedicated to the enterprise or third-party serviceprovider, and/or hosted in a remote computing environment such as, forexample, a private or public cloud environment with infrastructure forsupporting multiple contact centers for multiple enterprises.

According to one exemplary embodiment, the contact center includesresources (e.g. personnel, computers, and telecommunication equipment)to enable delivery of services via telephone or other communicationmechanisms. Such services may vary depending on the type of contactcenter, and may range from customer service to help desk, emergencyresponse, telemarketing, order taking, and the like.

Customers, potential customers, or other end users (collectivelyreferred to as end users) desiring to receive services from the contactcenter may initiate inbound calls to the contact center via their enduser devices 10 a-10 c (collectively referenced as 10). Each of the enduser devices 10 may be a communication device conventional in the art,such as, for example, a telephone, wireless phone, smart phone, personalcomputer, electronic tablet, and/or the like. The mechanisms of contactin a call, and the corresponding user devices 10, need not be limited toreal-time voice communications as in a traditional telephone call, butmay be non-voice communications including text, video, and the like, andmay include email or other non-real-time means of communication. Thusthe term “call” as used herein is not limited to a traditional telephonecall but is a generalized term including any form of communication inwhich a contact center may participate.

Inbound and outbound calls from and to the end user devices 10 maytraverse a telephone, cellular, and/or data communication network 14depending on the type of device that is being used. For example, thecommunications network 14 may include a private or public switchedtelephone network (PSTN), local area network (LAN), private wide areanetwork (WAN), and/or public wide area network such as, for example, theInternet. The communications network 14 may also include a wirelesscarrier network including a code division multiple access (CDMA)network, global system for mobile communications (GSM) network, and/orany 3G or 4G network conventional in the art.

According to one exemplary embodiment, the contact center includes aswitch/media gateway 12 coupled to the communications network 14 forreceiving and transmitting calls and/or data between end users and thecontact center. The switch/media gateway 12 may include a telephonyswitch configured to function as a central switch for agent levelrouting within the center. In this regard, the switch 12 may include anautomatic call distributor, a private branch exchange (PBX), an IP-basedsoftware switch, and/or any other switch configured to receiveInternet-sourced calls and/or telephone network-sourced calls. Accordingto one exemplary embodiment of the invention, the switch is coupled to acall server 18 which may, for example, serve as an adapter or interfacebetween the switch/media gateway 12 and the remainder of the routing,monitoring, and other call-handling systems of the contact center.

The contact center may also include a multimedia/social media server 24,which may also be referred to as an interaction server, for engaging inmedia interactions other than voice interactions with the end userdevices 10 and/or web servers 32. The media interactions may be related,for example, to email, chat, text-messaging, web, social media, and thelike. The web servers 32 may include, for example, social interactionsite hosts for a variety of known social interaction sites to which anend user may subscribe, such as, for example, Facebook, Twitter, and thelike. The web servers may also provide web pages for the enterprise thatis being supported by the contact center. End users may browse the webpages and get information about the enterprise's products and services.The web pages may also provide a mechanism for contacting the contactcenter, via, for example, web chat, voice call, email, web real timecommunication (WebRTC), or the like.

According to one exemplary embodiment of the invention, the switch iscoupled to an interactive voice response (IVR) server 34. The IVR server34 is configured, for example, with an IVR script for querying customerson their needs. For example, a contact center for a bank may tellcallers, via the IVR script, to “press 1” if they wish to get an accountbalance. If this is the case, through continued interaction with theIVR, customers may complete service without needing to speak with anagent.

If the call is to be routed to an agent, the call is forwarded to thecall server 18 which interacts with a routing server 20 for finding themost appropriate agent for processing the call. The call server 18 maybe configured to process PSTN calls, VoIP calls, and the like. Forexample, the call server 18 may include a session initiation protocol(SIP) server for processing SIP calls. In another exemplary embodiment,the call server may include a telephony server (T-server) to, forexample, translate one protocol to another protocol for use in thesystem.

In one example, while an agent is being located and until such agentbecomes available, the call server may place the call in a call queue.The call queue may be implemented via any data structure conventional inthe art, such as, for example, a linked list, array, and/or the like.The data structure may be maintained, for example, in buffer memoryprovided by the call server 18.

Once an appropriate agent is available to handle a call, the call isremoved from the call queue and transferred to the corresponding agentdevice 38 a-38 c (collectively referenced as 38). Collected informationabout the caller and/or the caller's historical information may also beprovided to the agent device for aiding the agent in better servicingthe call. In this regard, each agent device 38 may include a telephoneadapted for regular telephone calls, VoIP calls, and the like. The agentdevice 38 may also include a computer for communicating with one or moreservers of the contact center and performing data processing associatedwith contact center operations. The selection of an appropriate agentfor routing an inbound call may be based, for example, on a routingstrategy employed by the routing server 20, and further based oninformation about agent availability, skills, and other routingparameters provided, for example, by a statistics server 22, which mayalso be referred to as a stat server 22. A person of skill in the artshould recognize that the stat server 22 may also be implemented viafirmware (e.g. an application-specific integrated circuit), hardware, ora combination of software, firmware, and hardware.

The multimedia/social media server 24 may also be configured to provide,to an end user, a mobile application 40 for downloading onto the enduser device 10. The mobile application 40 may provide user configurablesettings that indicate, for example, whether the user is available, notavailable, or availability is unknown, for purposes of being contactedby a contact center agent. The multimedia/social media server 24 maymonitor the status settings and send updates to the aggregation moduleeach time the status information changes.

The contact center may also include a reporting server 28 configured togenerate reports from data aggregated by the stat server 22. Suchreports may include near real-time reports or historical reportsconcerning the state of resources, such as, for example, average waitingtime, abandonment rate, agent occupancy, and the like. The reports maybe generated automatically or in response to specific requests from arequestor (e.g. agent/administrator, contact center application, and/orthe like).

To store configuration information such as device characteristics andagent attributes, such as agent skill levels, a configuration server 42may be included in the system. The configuration server 42 may, forexample, provide attribute values for objects or processes when theseare created, at system startup, or subsequently.

According to one exemplary embodiment of the invention, the contactcenter also includes a mass storage device 30 for storing data relatedto contact center operations such as, for example, information relatedto agents, customers, customer interactions, and the like. The massstorage device may take the form of a hard disk or disk array as isconventional in the art.

Each of the various servers of FIG. 1 may include one or more processorsexecuting computer program instructions and interacting with othersystem components for performing the various functionalities describedherein. The computer program instructions are stored in a memory whichmay be implemented in the server using a standard memory device, suchas, for example, a random access memory (RAM). The computer programinstructions may also be stored in other non-transitory computerreadable media such as, for example, a CD-ROM, flash drive, or the like.Also, although the functionality of each of the servers is described asbeing provided by the particular server, a person of skill in the artshould recognize that the functionality of various servers may becombined or integrated into a single server, or the functionality of aparticular server may be distributed across one or more other serverswithout departing from the scope of the exemplary embodiments of thepresent invention.

Referring to FIG. 2, in one exemplary embodiment of the presentinvention, a contact center may have two types of contact centerobjects: directory numbers (DNs) 210 and agents 220 corresponding torespective agent identification numbers. An agent 220 may be logged out,i.e., not associated with any DN 210, or logged into one or more DNs210. An agent 220 may participate in calls. The relationship between DNs210 and calls is many-to-many, i.e., one DN 210 can simultaneously orconcurrently participate in multiple calls, and multiple DNs 210 canparticipate in a single call.

Information about the contact center can be obtained by connection todata-sources, which may be referred to as controllers, which may beinstantiated by the call server 18 (FIG. 1). Referring to FIG. 3, twotypes of controllers may be implemented: call controllers 330 and devicecontrollers 310. A device controller 310 may report the state of one ormore devices; this state may include whether an agent is logged in,whether the device is on hook, and whether the device is ready. Callcontrollers 330 may report information on calls. Both types ofcontroller act as servers and the information reported may be madeavailable to clients which may connect to the controllers 310, 330.

Such clients may include data aggregation nodes 320. In one exemplaryembodiment, the data aggregation nodes 320 may reside in, or beinstantiated by, the stat server 22 (FIG. 1). The stat server may be oneor more processes executing on one or more processors. The state of anyDN may not be available from any single controller, and, in oneexemplary embodiment, the device controllers 310 and call controllers330 are each monitored by at least one data aggregation node, to obtainthe full state of a DN.

This monitoring of all controllers may be accomplished as follows. Themonitoring system may be implemented as a distributed system, connectedto the controllers. The distributed monitoring system may include P dataaggregation nodes numbered 1 through P. The following assumptions,labeled (A1) through (A5), are sufficient for the distributed monitoringsystem, according to one exemplary embodiment, to be scalable:

(A1) All DNs are evenly distributed among the device controllers 310, sothat each device controller monitors approximately the same number ofDNs as any other device controller, and all calls are evenly distributedamong the call controllers 330, so that at any time, each callcontroller 330 is monitoring approximately the same number of calls asany other call controller;

(A2) each controller 310, 330 is monitored by one data aggregation node320;

(A3) none of the controllers is connected to more than one dataaggregation node;

(A4) if multiple monitoring data aggregation nodes are connected to thesame call controller, the latter is capable of load-balancing callsbetween multiple monitoring data aggregation nodes; (this assumptionjustifies assumption A3);

(A5) each contact center object is owned by one data aggregation node.In this context, ownership implies an exclusive association, in whicheach contact center object has one and only one data aggregation nodethat is its owner.

Although the above assumptions are sufficient for scalability, they arenot necessary, and they may not be true in some embodiments of thepresent invention. For example, if a device controller is executing on aparticularly powerful processor, it may monitor a larger number of DNsthan another device controller executing on a less powerful processor.Moreover, in one embodiment, high availability (HA) may be achieved inpart by instantiating multiple agent-owner nodes for each agent forredundancy.

In one exemplary embodiment a static hash function may be used toassociate each DN with the data aggregation node owning the DN, and aseparate static hash function may be used to associate each agent withthe data aggregation node owning the agent. In one exemplary embodiment,a single static hash function may be used to associate all contactcenter objects, i.e., all agents and DNs, with their respective ownernodes. Each data aggregation node is responsible for maintaining thestate of each contact center object that it owns.

Some of the information that a contact center object owner dataaggregation node is responsible for maintaining may not be availablefrom any of the controllers to which the node is connected. In thiscase, the contact center object owner data aggregation node may obtainthe information from another data aggregation node, to enable thecontact center object owner data aggregation node to maintain thenecessary state information. Referring to FIG. 4A, this can beaccomplished by connecting the data aggregation nodes 420, 430, 440together via a topic-based publish-subscribe bus 410.

This publish-subscribe bus 410 may have a topic for partial DN state anda topic for full DN state, where, as used herein, “topic” identifies adata set conceptually analogous to a table in a relational database.Publication to the topic may take the form of operations analogous tooperations executed to change the contents of such a table, includingfor example the operations (i) add tuple, (ii) update tuple, and (iii)remove tuple. Each published tuple may have a unique key. Any dataaggregation node 430, 440 subscribing to either topic may provide one ormore filter conditions, for the purpose of configuring thepublish-subscribe bus to send it all publications satisfying the filterconditions.

All data aggregation nodes potentially may publish on the topic ofpartial DN state. Tuples which contain partial state information for aDN may be in the form

-   -   Publisher_id,    -   Owner_id,    -   DN_id, and    -   <partial DN state>,

with a unique key given by {publisher_id, DN_id}. A DN-owner dataaggregation node 430, i.e., the data aggregation node which owns aparticular DN, may subscribe to the topic, giving as the filtercondition

Owner_id=<self>,

i.e., DN-owner data aggregation node 430 will receive all publicationscontaining partial state information for any DN for which it is itselfthe owner. In one exemplary embodiment, when a data aggregation nodeinitially subscribes to the publish-subscribe bus 410, it may receive anarchive of all publications published to the topic satisfying its filtercondition. Subsequently it will receive publications, i.e., tuples,corresponding to any further publication operations, each of which mayaffect the state it maintains for the DN.

An agent-owner data aggregation node 440, i.e., a data aggregation nodewhich owns an agent, may similarly be responsible for maintaining fullstate information on that agent by merging state information it mayreceive from the publish-subscribe bus 410, under the topic DN_STATE,which contains full state information for the DNs. Publications of fullDN state that the agent-owner data aggregation node 440 may use toobtain and maintain agent state information may take the following form:

-   -   DN_id,    -   Agent_id,    -   Prev_Agent_ID,    -   Agent_owner_node_id,    -   Prev_agent_node_id, and    -   <full DN state>

They may use the unique key {publisher_id, DN_id}.

The agent-owner data aggregation node 440 responsible for maintainingstate information for a particular agent may then subscribe with thefollowing filter:

Agent_owner_node_ID=<self>∥<Prev_agent_owner_node_ID=<self>,

i.e., it will receive publications of full DN state information if it isitself (i) the owner of the agent currently logged in to the DN or (ii)the owner of the agent most recently logged in to the DN. The latterpart of the filter condition is useful to prevent loss of agent stateinformation related to a DN immediately after the agent logs out of thatDN.

The publishers publishing to the DN_PARTIAL_STATE topic on thepublish-subscribe bus 410 are, in one exemplary embodiment, dataaggregation nodes connected to call controllers or device controllers,and the publishers publishing to the DN_STATE topic on thepublish-subscribe bus 410 are DN-owner data aggregation nodes.

Although for clarity only one each of the first, second, and third nodesare illustrated in FIG. 4A, the invention is not limited to such aconfiguration. Referring to FIG. 4B, in general the system may include aplurality of data aggregation nodes 420, each connected to one or morecall controllers 330 and/or device controllers 310, and each publishingpartial DN state information for one or more DNs to thepublish-subscribe bus. A DN-owner data aggregation node 430 may obtainthe publications of partial DN state information for a DN it owns bysubscribing to the publish-subscribe bus as described above, and it maymerge the publications to form full DN state information for the DN.Similarly, referring to FIG. 4C, there may be multiple data aggregationnodes 430, each forming and publishing full DN state information whichthey may publish to the publish-subscribe bus. An agent-owner dataaggregation node 440 may obtain publications of full DN stateinformation relevant for an agent it owns, and merge the publications toform agent state information for the agent. In general, multipleagent-owner data aggregation nodes 440 may, in a similar manner, eachform agent state information for one or more agents.

Moreover, the various categories of data aggregation nodes need not bedistinct: a given data aggregation node may be (i) connected to one ormore call controllers, (ii) connected to one or more device controllers,(iii) a DN-owner data aggregation node, (iv) an agent owner dataaggregation node, or any combination of (i) through (iv). The dataaggregation nodes 420, 430, and 440 may, in an exemplary embodiment, bedistributed processes running on separate processors 470, 480, and 490.

In one exemplary embodiment, when a data aggregation node 420 which isnot the owner of a particular DN receives an event about the DN from adevice controller or from a call controller, it recalculates the partialstate information of the DN that it maintains locally and publishes itinto DN_PARTIAL_STATE. The data aggregation node 430 which is the ownerof the DN aggregates the partial state information published by otherdata aggregation nodes 420 to calculate the full DN state information,which it then publishes. This calculation can be representedsymbolicallyDN_(state)=DN_(partial state) ¹⊕ . . . ⊕DN_(partial state) ^(p),

where ⊕ is the partial DN state merge operation.

Similarly, when an agent-owner data aggregation node 440 receives apublication (e.g., add, update, or remove) about changes in the full DNstate of a DN to which its agent is logged in, it recalculates the agentstate based on the set of existing full DN states, an operation whichcan be writtenAgent_(state)=DN_(state) ¹⊙ . . . ⊙DN_(state) ^(p)

where ⊙ is the merge operation performed by the agent-owner dataaggregation node 440.

In one exemplary embodiment, the publish-subscribe bus may comprise amessage broker. A data aggregation node publishing to theDN_PARTIAL_STATE topic or to the DN_STATE topic may send a message tothe message broker, which may store it, and also forward it to allsubscribers for which the message meets the criteria of the subscriber'sfilter. Each subscriber may provide one or more filters to the messagebroker when subscribing. The message broker may store the data in sharedmemory so that it is readily accessible to processes on any processorhaving access to the shared memory. The message broker may use theunique key in each tuple to avoid duplicates in the stored data. Inanother exemplary embodiment, the publish-subscribe bus may include thelogical equivalent of a message broker without including a separate anddistinct software entity performing that function. In such an exemplaryembodiment the functions of the message broker may be implemented usingoperating system primitives including semaphores and mutexes.

To summarize, referring to FIG. 4A, in one exemplary embodiment thethree data aggregation nodes illustrated may play different andcooperative roles in aggregating and maintaining full DN stateinformation and agent state information. A first data aggregation node420 may be connected to a call controller from which it obtainsinformation relevant for both agent states and DN states. In anotherexemplary embodiment, the first data aggregation node 420 may instead,or in addition, be connected to a device controller, from which it mayobtain information relevant for both agent states and DN states. Thefirst data aggregation node 420 calculates updates to partial DN statesand publishes them on the publish-subscribe bus 420. A second dataaggregation node 430 may be the owner of a DN and, accordingly, maysubscribe to all publications relevant to that DN, and aggregate thepublications of partial DN state, to maintain the full DN state. It maypublish the full DN state each time it changes. The full DN state maycontain components of the agent state, so that an agent-owner dataaggregation node 440 may subscribe to publications of the DN state, forall DNs to which its agent is logged in, to maintain full agent statefor the agent it owns.

Referring also to FIG. 5, the sequence of steps for forming full DNstate information for an exemplary DN, and full agent state informationfor an exemplary agent, may in one exemplary embodiment be summarized asfollows. In a first step 510, a first data aggregation node 420 obtainspartial DN state information for the exemplary DN from one or more callcontrollers. In another exemplary embodiment, the first data aggregationnode 420 may instead, or in addition, be connected to a devicecontroller, from which it may obtain information relevant for both agentstates and DN states. In step 520, the first data aggregation node 420publishes the partial DN state information under the topicDN_PARTIAL_STATE. In step 530, a second data aggregation node 430, whichis the DN-owner data aggregation node owning the exemplary DN, and whichhas subscribed to the topic DN_PARTIAL_STATE with a filter selectingpublications relevant to the exemplary DN, obtains the partial DN stateinformation, and also obtains partial DN state information published byother data aggregation nodes. This data aggregation node 430 merges thepartial DN state information it obtains into full DN state, andpublishes it, in step 550, to the publish-subscribe bus, under the topicDN_FULL_STATE.

Subsequently, a third data aggregation node 440, which is an agent-ownerdata aggregation node which has subscribed to the topic DN_STATE withappropriate filters receives, in step 550, publications of full DN statefor all DNs to which the agent it owns is logged in, or was recentlylogged in. A suitable filter is one which communicates a publication tothe subscribing agent-owner data aggregation node if the agent it ownsis either currently logged in to the DN or was the most recent agentlogged in to the DN. From the full DN state of all DNs to which itsagent is logged in or was recently logged in, the agent-owner dataaggregation node is able to assemble, by merging information from thepublications it receives, the agent state.

In one embodiment, data aggregation may take place in a larger number ofstages, or layers, than those of the embodiment illustrated in FIG. 4A.Referring to FIG. 6, partial DN state information may be obtained fromthe publish-subscribe bus 410 by a second data aggregation node 610which may aggregate DN state information but which need not aggregatefull DN state information. This DN state information aggregated by thesecond data aggregation node 610 may be referred to as aggregated DNstate information. Aggregated DN state information may be full DN stateinformation, or it may be less than full DN state information, which maybe referred to as partially aggregated DN state information. A thirddata aggregation node 620 may then combine aggregated DN stateinformation into full DN state information, and a fourth dataaggregation node 630 may then obtain and maintain agent stateinformation. The various data aggregation nodes may be instantiated byand execute on one server or they may be instantiated by separateservers 470, 480, 640, and 490, as illustrated in FIG. 6. In anotherembodiment, there may be more than the one intermediate aggregationlevel shown and designated in FIG. 6 as aggregated DN state, viz. theremay be multiple levels of aggregated DN state information, each levelcontaining DN state information absent from the lower levels.

The embodiment illustrated in FIG. 4A may then be considered to be aspecial case of the embodiment of FIG. 6, in which the aggregated DNstate information is full DN state information.

That this architecture is scalable may be seen as follows. Thearchitecture assumes that the scalability assumptions (A1) through (A5)above hold, and that the contract center has, for example, n devicecontrollers and m call controllers.

A monitoring sub-system may be constructed as follows:

-   -   n data aggregation nodes are started (in this instance, the        number of data aggregation nodes P is selected for convenience        to be equal to the number of device controllers, i.e., P=n)    -   Each data aggregation node is connected to a single device        controller (with no duplicates)    -   Each data aggregation node is connected to all m call        controllers.

The communication with device controllers may be ignored, assuming thatit is negligible compared to that with the call controllers. Inparticular, this approximation is made with regards to linearscalability for treating input/output and processing load. There may bemany more events and much more traffic coming from call controllers thanfrom device controllers.

P(Ω) may be used to denote the probability of the event Ω thatmonitoring node N_(i) will be affected by some call C. ThenP(Ω)=P(Ω₁)+P(Ω₂),

where Ω₁ is the event that N_(i) is assigned the call C, and Ω₂ is theevent that N_(j) is assigned the call C, with, j≠i and that N_(i) isaffected (through the publish-subscribe bus).

As a result of scalability assumptions A3 and A4,

${\left. \left( \Omega_{1} \right) \right.\sim\frac{1}{n}}.$

Next, P(Ω₂)=P(Ω₃∪Ω₄) where Ω₃ is the event that N_(i) owns the DN fromthe call C and where Ω₄ is the event that N_(i) owns the agent of the DNfrom the call C. Using probability rules and the independence of Ω₃ andΩ₄, it follows thatP(Ω₂)=P(Ω₃)+P(Ω₄)−P(Ω₃)×P(Ω₄).

Then, as a result of scalability condition (A5),

${{\left. {P\left( \Omega_{3} \right)} \right.\sim\frac{1}{n}}\mspace{14mu}{and}\mspace{14mu}{\left. {P\left( \Omega_{4} \right)} \right.\sim\frac{1}{n}}},$and the probability of the event Ω is found to be

${\left. {P(\Omega)} \right.\sim\frac{1}{n}}.$

This demonstrates the linear scalability of the architecture disclosedherein.

It should be appreciated from the above that the various structures andfunctions described herein may be incorporated into a variety ofapparatuses (e.g., a stat server, a call server, etc.) in a contactcenter and implemented in a variety of ways. Different embodiments ofthe statistical and/or monitoring systems may include a variety ofhardware and software processing components. In some exemplaryembodiments, hardware components such as processors, controllers, statemachines and/or logic may be used to implement the described componentsor circuits. In some exemplary embodiments, code such as software orfirmware executing on one or more processing devices may be used toimplement one or more of the described operations or components.

Although exemplary embodiments of the method of distributed maintenanceof contact center state have been specifically described and illustratedherein, many modifications and variations will be apparent to thoseskilled in the art. Accordingly, it is to be understood that the methodof distributed maintenance of contact center state constructed accordingto principles of this invention may be embodied other than asspecifically described herein. The invention is also defined in thefollowing claims, and equivalents thereof.

What is claimed is:
 1. A system, comprising: one or more processors andassociated memory devices, wherein the associated memory devices storeinstructions that, when executed by the one or more processors, causethe one or more processors to respectively: transmit first signals to aplurality of first computing nodes to publish, to a communication bus,first and second partial state information of a first directory number;transmit a second signal to a second computing node to: receive, fromthe communication bus, the first and second partial state information ofthe first directory number; and aggregate the first and second partialstate information of the first directory number to generate firstaggregated directory number state information; transmit a third signalto a third computing node to: receive, from the communication bus, thefirst aggregated directory number state information of the firstdirectory number and aggregated state information for each of aplurality of other directory numbers corresponding to an agent; anddetermine state information for the agent based on the first aggregateddirectory number state information and the aggregated state informationfor each of the plurality of other directory numbers corresponding tothe agent; output the state information for the agent for routing aninteraction to the agent; and an electronic switch coupled to the one ormore processors and configured to establish a communication session witha communication device of the agent in response to the routing of theinteraction.
 2. The system of claim 1, wherein the first directorynumber is a telephony number.
 3. The system of claim 1, wherein one ofthe first computing nodes, the second computing node, and the thirdcomputing node is in electronic communication with a device controllerand a call controller.
 4. The system of claim 1, wherein thecommunication bus comprises a storage space in shared memory of thefirst, second, and third computing nodes.
 5. The system of claim 1,wherein: each of the first computing nodes is a publisher to thecommunication bus; the second computing node is a subscriber to thecommunication bus; and the communication bus is a publish-subscribe buscomprising a message broker configured to distribute publications tosubscribers according to results of application of filter conditions ofthe subscribers.
 6. The system of claim 5, wherein each publication tothe communication bus by one of the first computing nodes comprises afield identifying a corresponding directory number for which thepublication includes partial state information.
 7. The system of claim1, wherein the second computing node is configured to publishpublications of the first aggregated directory number state informationto the communication bus under a topic for aggregated directory numberstate information.
 8. The system of claim 1, wherein the third computingnode is configured to subscribe to the communication bus under a topicfor aggregated directory number state information based on one or morefilter conditions.
 9. A method comprising: transmitting, by one or moreprocessors, first signals to a plurality of first computing nodes topublish, to a communication bus, first and second partial stateinformation of a first directory number; transmitting, by the one ormore processors, a second signal to a second computing node to: receive,from the communication bus, the first and second partial stateinformation of the first directory number; and aggregate the first andsecond partial state information of the first directory number togenerate first aggregated directory number state information;transmitting, by the one or more processors, a third signal to a thirdcomputing node to: receive, from the communication bus, the firstaggregated directory number state information of the first directorynumber and aggregated state information for each of a plurality of otherdirectory numbers corresponding to an agent; and determine stateinformation for the agent based on the first aggregated directory numberstate information and the aggregated state information for each of theplurality of other directory numbers corresponding to the agent;outputting, by the one or more processors, the state information for theagent for routing an interaction to the agent; and transmitting, by theone or more processors, a fourth signal to an electronic switch toestablish a communication session with a communication device of theagent in response to the routing of the interaction.
 10. The method ofclaim 9, wherein the first directory number is a telephony number. 11.The method of claim 9, wherein one of the first computing nodes, thesecond computing node, and the third computing node is in electroniccommunication with a device controller and a call controller.
 12. Themethod of claim 9, wherein the communication bus comprises a storagespace in shared memory of the first, second, and third computing nodes.13. The method of claim 9, wherein: each of the first computing nodes isa publisher to the communication bus; the second computing node is asubscriber to the communication bus; and the communication bus is apublish-subscribe bus comprising a message broker configured todistribute publications to subscribers according to results ofapplication of filter conditions of the subscribers.
 14. The method ofclaim 13, wherein each publication to the communication bus by one ofthe first computing nodes comprises a field identifying a correspondingdirectory number for which the publication includes partial stateinformation.
 15. The method of claim 9, wherein the second computingnode is configured to publish publications of the first aggregateddirectory number state information to the communication bus under atopic for aggregated directory number state information.
 16. The methodof claim 9, wherein the third computing node is configured to subscribeto the communication bus under a topic for aggregated directory numberstate information based on one or more filter conditions.